<?php
class admin_accessModel extends Model {
    
    const ROLE_ACCESSS_LIST = 'role_access_list_';
    
    
    public function getAllByRoleId($role_id) {
        if(!$role_id) {
            return [];
        }
        $list = Cache_Memcache::getInstance()->get(self::ROLE_ACCESSS_LIST.$role_id);
        if($list!==false) {
            return $list;
        }
        $role_list = [];
        if($list = $this->getAll('role_id=?', $role_id)) {
            foreach ($list as $row) {
                $role_list[] = $row['node_id'];
            }
        }
        Cache_Memcache::getInstance()->set(self::ROLE_ACCESSS_LIST.$role_id, $role_list);
        return $role_list;
    }
    
    public function updateRole($role_id, $node_list) {
        if(!$role_id) {
            return false;
        }
        $this->delete('role_id=?', $role_id);
        if($node_list) {
            $sql = 'insert into wf_admin_access (role_id, node_id) values ';
            $sql_data = [];
            foreach ($node_list as $row) {
                $sql_data[] = '('.$role_id.','.$row.')';
            }
            $sql .= implode(',', $sql_data);
        }
        if($this->execute($sql)) {
            Cache_Memcache::getInstance()->delete(self::ROLE_ACCESSS_LIST.$role_id);
            return true;
        }
        return false;
    }
}